package br.edu.universo.si.projeto2.infojob.client.apresentacao;

import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.DeferredCommand;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.WindowResizeListener;
import com.google.gwt.user.client.ui.DecoratedStackPanel;
import com.google.gwt.user.client.ui.DockPanel;
import com.google.gwt.user.client.ui.Hyperlink;
import com.google.gwt.user.client.ui.StackPanel;
import com.google.gwt.user.client.ui.VerticalPanel;

public class AMenuEmpresa extends DockPanel implements WindowResizeListener
{
	private Hyperlink alteraContaLink;
	private Hyperlink alterarSenhaLink;
	private Hyperlink encerraContaLink;
	private Hyperlink logoffLink;
	private Hyperlink perfilLink;
	private Hyperlink cadastrarVagasLink;
	private Hyperlink listarVagasEmAbertoLink;
	private Hyperlink listarVagasEncerradasLink;
	private Hyperlink buscarProfissionaisLink;
	private Hyperlink caixaEntradaMensagensLink;
	private Hyperlink mensagensEnviadasLink;
	private Hyperlink realizaDenunciaLink;

	public AMenuEmpresa()
	{
		this.add(criarMenuEmpresa(), DockPanel.CENTER);
		Window.addWindowResizeListener(this);
		DeferredCommand.addCommand(new Command(){
			public void execute() {
				onWindowResized(Window.getClientWidth(), Window.getClientHeight());
			}
		});
		onWindowResized(Window.getClientWidth(), Window.getClientHeight());
	}

	private StackPanel criarMenuEmpresa()
	{
		alteraContaLink = new Hyperlink("Alterar Conta", null);
		alterarSenhaLink = new Hyperlink("Alterar Senha", null);
		encerraContaLink = new Hyperlink("Encerrar Conta", null);
		logoffLink = new Hyperlink("Logoff", null);
		perfilLink = new Hyperlink("Perfil", null);
		cadastrarVagasLink = new Hyperlink("Cadastrar Vaga", null);
		listarVagasEmAbertoLink = new Hyperlink("Vagas em aberto", null);
		listarVagasEncerradasLink = new Hyperlink("Vagas encerradas", null);
		buscarProfissionaisLink = new Hyperlink("Buscar Profissionais", null);
		caixaEntradaMensagensLink = new Hyperlink("Caixa de Entrada", null);
		mensagensEnviadasLink = new Hyperlink("Mensagens Enviadas", null);
		realizaDenunciaLink = new Hyperlink("Realizar Denúncia", null);

		//STACK panel
		DecoratedStackPanel stackPanel = new DecoratedStackPanel();
		stackPanel.setWidth("250px");
		stackPanel.setHeight("100%");
		
		// panel da conta
		VerticalPanel contaPanel = new VerticalPanel();
		contaPanel.add(alteraContaLink);
		contaPanel.add(alterarSenhaLink);
		contaPanel.add(encerraContaLink);
		contaPanel.add(logoffLink);
		
		// panel de perfil
		VerticalPanel perfilPanel = new VerticalPanel();
		perfilPanel.add(perfilLink);
		contaPanel.add(logoffLink);

		// panel de vagas
		VerticalPanel vagasPanel = new VerticalPanel();
		vagasPanel.add(cadastrarVagasLink);
		vagasPanel.add(listarVagasEmAbertoLink);
		vagasPanel.add(listarVagasEncerradasLink);
		
		// busca
		VerticalPanel buscaPanel = new VerticalPanel();
		buscaPanel.add(buscarProfissionaisLink);

		// panel de mensagens
		VerticalPanel mensagensPanel = new VerticalPanel();
		mensagensPanel.add(caixaEntradaMensagensLink);
		mensagensPanel.add(mensagensEnviadasLink);
		mensagensPanel.add(realizaDenunciaLink);

		contaPanel.setSpacing(5);
		vagasPanel.setSpacing(5);
		buscaPanel.setSpacing(5);
		contaPanel.setSpacing(5);

		stackPanel.add(contaPanel, "Conta");
		stackPanel.add(perfilPanel, "Perfil");
		stackPanel.add(vagasPanel, "Vagas");
		stackPanel.add(buscaPanel, "Busca");
		stackPanel.add(mensagensPanel, "Mensagens");

		return stackPanel;
	}

	public Hyperlink getAlteraContaLink() {
		return alteraContaLink;
	}

	public void setAlteraContaLink(Hyperlink alteraContaLink) {
		this.alteraContaLink = alteraContaLink;
	}

	public Hyperlink getAlterarSenhaLink() {
		return alterarSenhaLink;
	}

	public void setAlterarSenhaLink(Hyperlink alterarSenhaLink) {
		this.alterarSenhaLink = alterarSenhaLink;
	}

	public Hyperlink getEncerraContaLink() {
		return encerraContaLink;
	}

	public void setEncerraContaLink(Hyperlink encerraContaLink) {
		this.encerraContaLink = encerraContaLink;
	}

	public Hyperlink getLogoffLink() {
		return logoffLink;
	}

	public void setLogoffLink(Hyperlink logoffLink) {
		this.logoffLink = logoffLink;
	}

	public Hyperlink getPerfilLink() {
		return perfilLink;
	}

	public void setPerfilLink(Hyperlink perfilLink) {
		this.perfilLink = perfilLink;
	}

	public Hyperlink getCadastrarVagasLink() {
		return cadastrarVagasLink;
	}

	public void setCadastrarVagasLink(Hyperlink cadastrarVagasLink) {
		this.cadastrarVagasLink = cadastrarVagasLink;
	}

	public Hyperlink getListarVagasEmAbertoLink() {
		return listarVagasEmAbertoLink;
	}

	public void setListarVagasEmAbertoLink(Hyperlink listarVagasLink) {
		this.listarVagasEmAbertoLink = listarVagasLink;
	}

	public Hyperlink getListarVagasEncerradasLink() {
		return listarVagasEncerradasLink;
	}

	public void setListarVagasEncerradasLink(Hyperlink listarVagasLink) {
		this.listarVagasEncerradasLink = listarVagasLink;
	}
	
	public Hyperlink getBuscarProfissionaisLink() {
		return buscarProfissionaisLink;
	}

	public void setBuscarProfissionaisLink(Hyperlink buscarProfissionaisLink) {
		this.buscarProfissionaisLink = buscarProfissionaisLink;
	}

	public Hyperlink getCaixaEntradaMensagensLink() {
		return caixaEntradaMensagensLink;
	}

	public void setCaixaEntradaMensagensLink(Hyperlink caixaEntradaMensagensLink) {
		this.caixaEntradaMensagensLink = caixaEntradaMensagensLink;
	}

	public Hyperlink getMensagensEnviadasLink() {
		return mensagensEnviadasLink;
	}

	public void setMensagensEnviadasLink(Hyperlink mensagensEnviadasLink) {
		this.mensagensEnviadasLink = mensagensEnviadasLink;
	}

	public Hyperlink getRealizaDenunciaLink() {
		return realizaDenunciaLink;
	}

	public void setRealizaDenunciaLink(Hyperlink realizaDenunciaLink) {
		this.realizaDenunciaLink = realizaDenunciaLink;
	}

	public void onWindowResized(int width, int height)
	{
		int largura = width - this.getAbsoluteLeft() - 9;

		if((largura < 250) || (largura > 250))
		{
			largura = 250;
		}

		int altura = height - this.getAbsoluteTop() - 9;

		if(altura < 1)
		{
			altura = 1;
		}

		this.setPixelSize(largura, altura);
	}
}